home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / os2 / sets11.zip / Sets.HPP < prev    next >
C/C++ Source or Header  |  1997-04-09  |  2KB  |  78 lines

  1. // Sets v 1.1
  2. // Hubert Chan, April 9, 1997
  3.  
  4. //#include <stream.h>
  5.  
  6. #ifndef __SETS_
  7. #define __SETS_
  8.  
  9. #define MAXELEMENT  6   // The largest possible element
  10. #define MINELEMENT -3   // The smallest possible element
  11.  
  12.  
  13. class Set {
  14. public:
  15.   typedef int SetElement;
  16. private:
  17.     #define NUMELEMENTS MAXELEMENT - MINELEMENT + 1
  18.     #define SETELEMENTSIZE (NUMELEMENTS / 8) + 1
  19.     char SetElements[SETELEMENTSIZE];
  20.     void AddElem(SetElement);    // add an element to the set
  21.     void RemoveElem(SetElement); // removes an element from the set
  22.     void ClearSet();             // creates the empty set
  23. public:
  24.     Set() {
  25.         ClearSet();
  26.     }
  27.  
  28.     Set(int size, SetElement *Elements) {
  29.         int counter;
  30.         ClearSet();
  31.         for(counter = 0; counter < size; counter++) {
  32.             AddElem(Elements[counter]);
  33.         }
  34.     }
  35.  
  36.     Set(SetElement Element) {
  37.         ClearSet();
  38.         AddElem(Element);
  39.     }
  40.  
  41.     Set(Set& Set2);
  42.  
  43.     Set operator=(Set);  // assignment
  44.     Set operator+(Set);  // union
  45.     Set operator|(Set);  // union
  46.     Set operator+(SetElement); // add an element
  47.     Set operator|(SetElement); // add an element
  48.     Set operator+=(Set);
  49.     Set operator|=(Set);
  50.     Set operator+=(SetElement);
  51.     Set operator|=(SetElement);
  52.     Set operator-();     // complement
  53.     Set operator~();     // complement
  54.     Set operator*(Set);  // intersection
  55.     Set operator^(Set);  // intersection
  56.     Set operator&(Set);  // intersection
  57.     Set operator*=(Set);
  58.     Set operator^=(Set);
  59.     Set operator&=(Set);
  60.     Set operator-(Set);  // intersection of complement (difference)
  61.     Set operator-(SetElement); // remove an element
  62.     Set operator-=(Set);
  63.     Set operator-=(SetElement);
  64.     int operator==(Set); // equivalence
  65.     int operator!=(Set); // inequivalence
  66.     int operator<=(Set); // subset
  67.     int operator<(Set);  // proper subset
  68.     int operator>=(Set); // superset
  69.     int operator>(Set);  // proper superset
  70.     friend int operator<=(SetElement, Set); // element
  71.  
  72.     friend void PrintSet(Set &);
  73. //    friend ostream& operator<<(ostream &, Set &);
  74.  
  75. };
  76.  
  77. #endif
  78.